Python
파이썬기초_01_가변 객체와 불변 객체
작성자 : Heehyeon Yoo|2025-12-14
# Python# Mutable# Immutable# 자료구조
1. 파이썬의 모든 것은 '객체'다
파이썬에서 변수는 값을 저장하는 상자가 아니라, 객체를 가리키는 이름표(Reference)일 뿐이다.
이 개념을 이해해야 파이썬의 메모리 동작을 이해할 수 있다.
a = [1, 2, 3]
b = a # b도 같은 [1, 2, 3] 객체를 가리킴
a.append(4)
print(b) # [1, 2, 3, 4] -> b도 영향을 받음!
2. 가변 객체 (Mutable)
"생성된 후에 상태를 변경할 수 있는 객체"
- 종류:
list,dict,set, 사용자 정의 클래스 등 - 특징:
- 값이 바뀌어도 메모리 주소(
id())는 변하지 않는다. - 함수의 기본 인자(Default Argument)로 사용할 때 주의해야 한다. (
def foo(l=[])문제)
- 값이 바뀌어도 메모리 주소(
3. 불변 객체 (Immutable)
"생성된 후에 상태를 변경할 수 없는 객체"
- 종류:
int,float,str,tuple - 특징:
- 값을 바꾸려 하면, 아예 새로운 객체를 만들어서 할당한다. (메모리 주소가 바뀜)
- 딕셔너리의 키(Key)나 집합(Set)의 요소로 사용할 수 있다. (해시 가능)
4. is와 ==의 차이
==: 값(Value)이 같은지 비교.is: 메모리 주소(Reference)가 같은지 비교. (동일 객체인지)
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True (내용물은 같음)
print(a is b) # False (서로 다른 주소에 생성된 별개의 리스트)